package datenbank;

import java.util.Observable;

import texte.TexteObserver;

public class ModelAllgemein extends Observable {
	private DatenbVerb datenbVerb;
	private final String TABELLE = "allgemein";
	private String artNr;

	/**
	 * Konstruktor
	 * 
	 * @param datenbVerb
	 */
	public ModelAllgemein(DatenbVerb datenbVerb) {
		this.datenbVerb = datenbVerb;
	}

	/**
	 * 
	 * @param artNr
	 * @return Artikel geladen
	 */
	public boolean setLoadArtikel(String artNr) {
		this.artNr = artNr;

		setChanged();
		notifyObservers(TexteObserver.CHANGEDB);
		
		return true;
	}

	/**
	 * Neuer Artikel
	 * 
	 * @param artNr
	 * @param standard 
	 */
	public void setNewArtikel(String artNr, boolean standard) {
		if (datenbVerb.getArtikelVorh(TABELLE, artNr)) {
			System.out.println("Artikel bereits vorhanden");
		} else {
			this.artNr = artNr;

			datenbVerb.setNewArtikel(artNr, TABELLE);

			if (standard) {
				//datenbVerb.copyOf(TABELLE, artNr, "standard");
			}
			
			setChanged();
			notifyObservers(TexteObserver.CHANGEDB);
		}
	}

	/**
	 *  
	 * @param index
	 * @param status
	 */
	public void setChange(int index, int status) {
		datenbVerb.setUpdateZahl(TABELLE, artNr, 0, index + 1, Integer.valueOf(status));
	}

	/**
	 * 
	 * @param index
	 * @return int
	 */
	public int getSelectedIndex(int index) {
		Object c = null;
		
		 c = datenbVerb.getAbfrageKompl(TABELLE, artNr, 0, index + 1);
		 
		 if (c == null) {
			 return 0;
		 }
		 
		 return (Integer) c;
	}

	/**
	 * 
	 * @param columnIndex
	 * @return Object
	 */
	public Float getDBEintragFloat(int columnIndex) {
		Object o = datenbVerb.getDBeintrag(TABELLE, artNr, columnIndex);

		if (o == null) {
			return 0.0f;
		}
		return Float.parseFloat(String.valueOf(o));
	}

	/**
	 * 
	 * @param copyOf
	 * @return boolean
	 */
	public boolean artikelCopy(String copyOf) {
		if (!datenbVerb.getArtikelVorh(TABELLE, copyOf) && !artNr.equals("")) {
			return false;
		}

		datenbVerb.copyOf(TABELLE, artNr, copyOf);

		setChanged();
		notifyObservers(TexteObserver.CHANGEDB);

		return true;
	}
}